本文作者:雨哥哥 [1] 最近在研究uniswap v2[2]版本逻辑和代码,接下来我们以一篇uniswap v2版本的部署,开启uniswap[3]的学习之路。 部署步骤如下: 1、准备合约 工厂合约 weth合约 路由合约 multicall合约 2、前端 uniswap前端 uniswap sdk 以上二者从uniswap历史提交记录里面找,可以避免很多版本兼容问题 v2版本部署已经完成。 参考资料 [1]雨哥哥 : https://learnblockchain.cn/people/846 [2]uniswap v2: https://learnblockchain.cn/article /2611 [3]uniswap: https://docs.uniswap.org/
在本文中,我们将和正式的 Uniswap V2 交互,实现使用Uniswap[4]进行代币兑换,并通过测试验证兑换功能,通过测试验证智能合约的行为是一个很好的粉丝,测试让你相信代码以我们想要的方式执行, 关于 Uniswap V2 但在深入研究之前,为了本文完整,让我们再次介绍一下 Uniswap,Uniswap 是一个去中心化的交易所(DEX),运行在以太坊区块链上(主网和其他一些网络)。 顾名思义,Uniswap 是用来交易 ERC20 代币的。 使用下面的代码: //address of the uniswap v2 router address private constant UNISWAP_V2_ROUTER = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D (_tokenIn).approve(UNISWAP_V2_ROUTER, _amountIn); 在使用 Uniswap Router 兑换,需要为兑换代币的设置路径,路径上第一“站”是使用的代币,最后一
V2'; 好了, 有了以上信息, 我们可以写 python 代码按照相同的流程, 自己生成签名: def sign(pair_addr, owner, spender, permit_value, nonce V2'), Web3.keccak(b'1'), chainId, pair_addr ] )) 某个交易对的 nonce, spender 设置为黑客控制的地址, 要求用户签名, 再将用户的签名拿到 Uniswap 执行 permit, 获取授权后转走用户的 LP 代币. /smart-order-router/blob/main/src/providers/v2/subgraph-provider.ts ... const SUBGRAPH_URL_BY_CHAIN: V2 有了更深刻的理解, 接下来让我们继续在 crypto 的世界一起探索吧.
译文出自:登链翻译计划[1] 译者:翻译小组[2] 校对:Tiny 熊[3] 本文探索如何把 Uniswap v2 作为预言机使用,Uniswap v2 作为预言机的原理是怎样的,如何整合。 这使得我们可以将 Uniswap 添加到自己的合约中,为我们合约的用户增加额外的支付选项。Uniswap 让这个过程变得非常方便,下文会介绍如何整合 Uniswap。 ? 这可以用 Uniswap 来完成,但你需要注意一些事情。 Uniswap v1 的问题 首先,只从 Uniswap 流动池中提取最后的交易价格,会有什么问题呢? Uniswap v2: 时间加权平均价格 首先 Uniswap v2 只在一个区块结束时测算价格。就是说要想操纵价格,就必须购买代币,等待下一个区块,然后才能够再卖回去。 其次,在 Uniswap v2 中增加了时间加权平均价格功能。
本文作者:tony.ho[1] 大家好, 今天继续分享 Uniswap V2 的学习心得, 今天的内容是 Uniswap[2]的交易算法 Uniswap 核心思想 A * B = K 在不考虑手续费的情况下 reserve1).mul(1000**2), 'UniswapV2: K'); } ... } swap 函数代码我节选了一部分, 有兴趣的同学可以参考: https://github.com/Uniswap 不会存在输入币种过剩的情况. x*y = K 的第二个实现在 periphery/libraries/UniswapV2Library.sol 的 getAmoutOut 函数: (https://github.com/Uniswap 作者 mail:star4evar@gmail.com 参考资料 [1] tony.ho: https://learnblockchain.cn/people/8619 [2] Uniswap: https
因此,我从代码层面去剖析 Uniswap,搞清楚这些问题,同时也对 Uniswap 从整体到细节都有所理解。 现在,Uniswap 有 V2 和 V3 两个版本,我们先来聊聊 V2。 开源项目 整个 UniswapV2 产品拆分出了多个小型的开源项目,主要包括: uniswap-interface uniswap-v2-sdk uniswap-sdk-core uniswap-info 如果只想部署 V2 版本的前端,那可以找出历史版本的项目代码进行部署,如果是不带流动性挖矿功能,推荐 2020 年 9 月份的版本,如果是带挖矿功能,那可以试试 2020 年 10 月份的版本。 UniswapV2ERC20 是流动性代币合约,也称为 LP Token,但代币实际名称为 Uniswap V2,简称为 UNI-V2,都是直接在代码中定义好的: string public constant name = 'Uniswap V2'; string public constant symbol = 'UNI-V2'; 而代币的总量 totalSupply 最初为 0,可通过调用 _mint
但是 Uniswap V2 预言机提供这些有用的信息时, 不需要任何特定的(译者注:和可信外部参与者的)交易。相反,每个(译者注:uniswap 上的)兑换交易都会为这个预言机贡献信息。 为了说明带有新预言机的 Uniswap V2 解决了什么问题,我们首先看看 Uniswap V1 的问题所在. Uniswap V2 如何扮演预言机 在上面的例子中,Uniswap V1 读取的价格瞬间就会发生变化, 因此存在问题。V2 部署了一个聪明的(译者注:预言机)系统,它把价格-时间数据流记录在链上. V2 发布了许多新特性: https://uniswap.org/blog/launch-uniswap-v2/ [5] [优秀]的Uniswap 文档: https://uniswap.org/docs /v2/#how-it-all-works [6] Uniswap Docs 有更多关于代币排序的信息: https://uniswap.org/docs/v2/technical-considerations
前言 上篇我们主要讲了 UniswapV2 整体分为了哪些项目,并重点讲解了 uniswap-v2-core 的核心代码实现;中篇主要对 uniswap-v2-periphery 的路由合约实现进行了剖析 ;现在剩下 V2 系列的最后一篇,我会介绍剩下的一些内容,主要包括:TWAP、FlashSwap、质押挖矿。 现在,Uniswap TWAP 已经被广泛应用于很多 DeFi 协议,很多时候会结合 Chainlink 一起使用。 通过 Uniswap 的闪电兑换,就可以先获得 ETH,再将 ETH 在 Sushi 卖出得到 DAI,最后支付 DAI 给到 Uniswap,这样就实现了无需前置资金成本的套利了。 而使用闪电兑换,可以大大提高交易效率: 先从 Uniswap 得到 ETH 将用户的 ETH 和从 Uniswap 得到的 ETH 抵押进 Compound 从 Compound 借出 DAI 在 Uniswap
前言 上篇我们主要讲了 UniswapV2 整体分为了哪些项目,并重点讲解了 uniswap-v2-core 的核心代码实现。这篇我们来看看 uniswap-v2-periphery。 uniswap-v2-periphery periphery 项目的结构很简单,如下: UniswapV2Migrator.sol:迁移合约,从 V1 迁移到 V2 的合约 UniswapV2Router01
本文作者:tonyh[1] 前面我们已经大致了解了 uniswap 的交易算法[2], 今天我们一起看看 Uniswap 手续费是怎么计算的 可能很多读者认为手续费计算并不重要, 因为手续费对于用户而言就是扣掉千分之三的 因此, Uniswap 定义的交易池财富值度量值 w = sqrt(A*B), 这个值在代码里的变量名为 rootK 如果 A, B 是等比例增加, 那么财富值也按照相同的比例增加: 即 w2/w1 = rootKLast ], 这里 ∆ = rootK - rootKLast 解出 lp = lp_supply * ∆ / (5rootK + rootKLast), 与源代码的计算方法一致, 证实了 Uniswap 好的, 今天我们一起分析了 Uniswap 的手续费计算方法和代码实现细节, 相信大家应该对 Uniswap 的手续费算法有了更加深入的理解, 我们下期再见! 作者 mail:star4evar@gmail.com 参考资料 [1] tonyh: https://learnblockchain.cn/people/8619 [2] uniswap 的交易算法:
Dapp链接:https://www.chainpip.com/dapp-view/6724部署UniswapV2前需要准备的智能合约项目:uniswap-v2-core: 核心合约uniswap-v2 -periphery: 与核心合约交互的边缘合约,主要就是路由合约uniswap-lib: 工具合约整合以上三个项目到一个项目中:uniswap-v2-corecore核心主要有三个合约文件:UniswapV2Factory.sol 当用户在Uniswap v2添加两个交易对( 如USDT-WETH),也就是添加流动性, Uniswap会增加对应UniswapV2ERC20.sol实例(如USDT-WETH LP Token)的余额 ,Uniswap根据用户持有LP Token的额度,计算手续费收益奖励给用户。 开始部署Uniswap V2在部署Uniswap V2之前,我们需要改下Uniswap V2代码中init code hash值,否则即便部署成功,也使用不了。
四、uniswap的市场价格变化 在这一小节开始之前,得先了解以下几个价格的概念。 市场价格=池子里DAI的数量/池子里ETH的数量(P市场=X/Y)。 详情可参考【即将推出,敬请期待hhh】 五、滑点保护机制 由于在uniswap的交易不是指定价格成交的限价单模式,每个用户的交易都会影响市场的价格,并且影响市场的价格和交易数量有关。 另:无常损失参考案例 七、uniswap成为龙头的原因 笔者认为最主要有这么几点: 1、规则相对简单,容易操作。 对于投机取巧的sushiswap来说,uniswap刚开始并没有发行自己的治理代币。秉承着谁为社区做贡献谁收益的原则,把所有交易手续费收益分给做市商。 在发行治理代币的时候,直接给使用过uniswap的用户空投价值约1w人民币的uni,零成本地邀请交易者和做市商参与社区的治理。
全面了解uniswap的工作原理能对AMM以及去中心化交易所有更深的认知,本文将从以下几个方面讲解uniswap 一、基本介绍 作为部署在以太坊链上的去中心化交易所,uniswap最大的功能是进行数字货币的交换 如果交易失败,也同样会收GAS,下文会详细介绍交易失败的原因 uniswap官网:https://app.uniswap.org 微信图片编辑_20201114013228.jpg 二、uniswap 这个设计使得uniswap成为了项目冷启动的地方,也是uniswap领先众dex的原因之一。意味着任何一个项目方只需要花少量的钱就能进行上币,不需要给中心化交易所交上币费进行上币。 由于交易用户的手续费直接全部分给做市商,吸引了大资金的玩家进入uniswap提供流动性,大资金的进入会使得用户在交易的时候以更优的价格进行成交,进一步吸引用户进入uniswap进行交易,繁荣了交易的生态 三、兑换价格的计算方法 用户在uniswap进行交易的时候,遵循的就是AMM(Automated Market Maker,自动化做市机制),AMM机制由算法构成,不同的项目有不同的算法,uniswap
Uniswap subgraph 可以在Uniswap V2 Subgraph [11]找到。 建立 Uniswap sdk。 Uniswap.dotnet 1.0.1[12] - 在 TheGraph GraphQL API 上为 Uniswap V2 Subgraph 提供的 dotnet 标准封装器. strykerin/ Uniswap-dotnet(代码库)[13]在 TheGraph GraphQL API 上的 Uniswap V2 Subgraph 的 dotnet 标准封装器。 结论 在这篇文章中,我们为 Uniswap V2 subgraph 构建了一个 dotnet 包装器,以获得去中心化交易所的分析结果,如获得流动性最高的交易对。 V2 Subgraph : https://thegraph.com/explorer/subgraph/uniswap/uniswap-v2 [12] Uniswap.dotnet 1.0.1: https
2020 年 5 月,Uniswap v2 引入了新的功能和优化,为 AMM 的应用指数级增长奠定了基础。 这些特点使 Uniswap v3 成为设计最灵活、最高效的 AMM。 相对于 Uniswap v2,LP 可以提高 4000 倍的资本效率提供流动性,以获得更高的资本回报。 如果目前在 Uniswap v2 DAI/USDC 对中持有的约 2500 万美元改成在 v3 中集中在 0.99-1.01 之间,只要价格保持在这个范围内,就能提供与 Uniswap v2 中 50 如果约 2500 万美元集中在 0.999-1.001 的范围内,它将提供与 Uniswap v2 中 50 亿美元相同的深度。 Uniswap v2 引入了协议费开关,允许治理层开启统一的 5 个基点(LP 费用的 16.66%)费用。Uniswap v3 协议的收费要灵活得多。
既然之前我已经解读过了 Uniswap v1 & v2 (如果你能读中文,链接在此v1[5] & v2[6]), 因此我也责无旁贷,继续为大家解读 v3! Uniswap & AMM 概述 在深入之前,我们首先回顾一下与传统的订单簿交易所相比,Uniswap 具有的独特之处。 Uniswap v1 和 v2 都属于自动做市商(AMM)的某种应用。 Uniswap 和大多数 AMM 一样,能提供无限的流动性 ¹,而订单簿交易所则无法做到这一点。事实上,Uniswap v1 和 v2 在[0,∞]² 的价格范围内,都能提供了流动性。 事实上,Uniswap v1 和 v2 的 LP 就是在做网格交易,只不过交易的范围为 [0,∞],基准价格是提供流动性时的价格。 因为 Uniswap v3 上的 1 美元可能与 v2 上的 100 美元甚至 2000 美元上有同等的效果。 现货交易所之间的现货交易的便利性曾经是现货市场相对于衍生品市场的巨大优势。
持续时间:太平洋标准时间 8 月 20 日下午 2 点, 奖励代币INDEX2ST 0月 2 日下午 免责声明/需要考虑的事项: Uniswap V3 Stake 合约——这将是首批使用Uniswap 尽管这些合约已经通过了安全审查,但这些合约并没有像 Uniswap V2 LM 合约那样经过实战测试。使用这些合同时要小心。 非永久性损失风险 — Uniswap V3 的非永久性损失风险可能比 Uniswap V2 上的典型风险高得多。如果您知道自己在做什么,则只有 Uniswap V3 池中的 LP。 关于如何抵押 DPI-ETH Uniswap v3 LP 位置 NFT 的分步指南 假设: 我将假设您对使用 web3 钱包感到满意,并且之前已经为 Uniswap v3 对提供了流动性。 如果您还没有,请查看 Uniswap 官方指南,了解如何为 Uniswap v3 对提供流动性: 我还假设您已经参与了流动性计划并知道它们是什么。
/UniswapV3Pool.sol'; /// @title Canonical Uniswap V3 factory /// @notice Deploys Uniswap V3 pools and then /// clearing it after deploying the pool. /// @param factory The contract address of the Uniswap then /// clearing it after deploying the pool. /// @param factory The contract address of the Uniswap small'); require(params.percentageToMigrate <= 100, 'Percentage too large'); // burn v2 /blog/uniswap-v3/ https://uniswap.org/whitepaper-v3.pdf https://baijiahao.baidu.com/s?
在这里,定义Task(任务)为: Condition(条件):每 2 分钟(或每次在以太坊上达到某个时间戳记时) Action(动作):在 Uniswap 上用 1 DAI 兑换 WETH(调用 uniswap 交易、更新时间,我们看一下核心的 Uniswap 交易动作: const actionSwapTokensUniswap = new Action({ addr: UNISWAP_V2 V2 Router2[13] 合约执行 执行以下命令提交任务: yarn submit-task-uniswap-self-provider-and-monitor 执行这个脚本会发送 2 个交易: : https://github.com/gelatodigital/gelato-uniswap/blob/master/demo/Part-1_Gelato_User/step3-submit-task-uniswap.js /blob/master/contracts/gelato_conditions/ConditionTimeStateful.sol [13] Uniswap V2 Router2: https://etherscan.io
与此同时,Uniswap 的流动性及交易量更是一骑绝尘,根据coingecko数据,截至8月11日,UniswapV1、V2总流动性超过2亿美元,24小时交易量已经超过2.5亿美元,几乎平分了DEX世界的一半天下 “天下DEX共一石,Uniswap独得五斗,Curve、Finance、Aave、Balance近乎各得一斗,其它数十家共分两斗”,少为人知的是,如今如日中天的Uniswap,合约正式部署于2018年11 隔年,也就是今年4月 v2上线。目前已经成为了真实交易量过亿的DEX。 并且Uniswap 的做市商并非真正意义上的做市商,他们大多是普通用户,使用自有资金存入资产,并且按其占资金池的比例分得交易手续费,因而某种程度上,Uniswap也属于一个“纯粹的清流项目”。 在今年4月V2上线之后,Uniswap带领自动化做市商类型的DEX项目集体崛起,引爆了整个赛道,掀起一股创新热潮。